#include <stdio.h>
#include <unistd.h>

int val = 100;

int main() {
    pid_t id = fork();
    if(id < 0) {
        perror("fork");
        return 1;
    }else if(id == 0) {
        while (1) {
            printf("我是一个子进程: val是: %d, &val是: %p, pid是: %d, ppid是: %d\n", val, &val, getpid(), getppid());
            sleep(1);
            val++;
        }
    }else {
        while (1) {
            printf("我是一个父进程: val是: %d, &val是: %p, pid是: %d, ppid是: %d\n", val, &val, getpid(), getppid());
            sleep(1);
        }
    }
    return 0;
} // 这里我们发现我们的内存地址不变，但是我们的值却是不一样的，这是因为我们这里显示的地址并不是我们的内存地址，而是我们的虚拟地址，虚拟地址通过了页表进行了映射。